The present invention relates generally to the field of computer graphics. More specifically, to graphics rendering systems and methods for creating realistic three-dimensional (3-D) graphical representations.
The use of procedural techniques for three-dimensional texturing (solid texturing), modeling, and shading in computer graphics and animation has grown rapidly over the past decade. It is now possible for three-dimensional objects and shapes created on a personal computer or workstation to be filled in with textures simulating natural materials and natural phenomena. For example, it is now common to display realistic images having textures resembling marble, wood, or stone. Likewise, computer researchers and scientists have successfully simulated natural phenomena such as fog, waves, fire, and clouds for display on a computer screen.
Texturing methods vary the point-to-point surface properties of an object to give the appearance of detail that is not actually present in the geometry. A xe2x80x9ctexturexe2x80x9dxe2x80x94sometimes referred to as a xe2x80x9cpatternxe2x80x9d or xe2x80x9cwallpaperxe2x80x9dxe2x80x94is simply an image that used as surface covering for objects or shapes created by a graphics program running on a computer. Textures come in many varieties. Examples include bump mapping, which simulate the appearance of surface bumps without actually modifying the geometry of the object; displacement mapping, in which textures are used actually to move the surface; and solid textures that give consistent textures of all surfaces of an object regardless of distortions of the surface parameter space.
A texture may be explicitly specified by storing all the complex details of the scene or sequence in a bit-map that contains the value of each pixel in the image. This approach obviously requires a large amount of storage space within the computer; but is it well suited for certain representations, such as a reproduction of a famous painting. Alternatively, all of the details of a given texture may be abstracted into a mathematical function or algorithm (i.e., a procedure) that is used to define pixel values. A procedural technique is defined as a code segment or algorithm that specifies some characteristic of computer generated model or effect. A procedural texture, therefore, is an image initially describedxe2x80x94not by the pixel valuesxe2x80x94but by the operation or formula, which may include a random element, used to create the pixel values.
Procedural textures offer certain advantages over bit-mapped textures. For instance, the storage requirements of a procedural texture are generally independent of the number of pixels. That is, a procedural texture can be stored in a storage space that is several orders of magnitude less than the space required to store a corresponding bit-mapped representation. Procedural textures also provide the power of parametric control (sometimes referred to as database amplification) allowing the user to create a variety of textures that can be evaluated to any desired resolution. Procedural techniques further offer the designer the flexibility of creating completely abstract or purely artistic effects that lack resemblance to natural objects. Techniques for building procedural textures are described in xe2x80x9cTexturing and Modelingxe2x80x9d, Second Edition, (Chapter 2) Ebert et al., Academic Press, London (1998). Various methods of using procedural textures in graphics rendering systems are disclosed in U.S. Pat. Nos. 5,956,043, 5,949,428, 5,852,443, 5,808,617, and 5,481,669.
One of the drawbacks of past rendering systems that use procedural textures is the long time it takes the host processor to fully calculate all the pixel values before the image is displayed on the screen. During this calculation period, the viewer is typically left staring at a blank screen. Therefore, what is needed is an efficient method and system that would make the texture pixels available to a graphics display device as soon as possible, while at the same time providing textures of arbitrarily high-resolution.
The present invention covers an apparatus and method for rendering a texture. In accordance with one embodiment of the invented method, a set of initial pixels are computed to produce an initial version of the texture. The initial version has a low resolution as compared to a later or final version of the texture. Following computation of the set of initial pixels, the initial version is scaled using an algorithm. In scaling, each of the initial pixels corresponds to a group of final pixels. The scaling algorithm creates interpolated values for the final pixels in each group.
After scaling, actual values for the final pixels are computed following a predetermined ordering. The predetermined ordering, in one embodiment, involves ordering the final pixels in each group in accordance with a first pseudo-random sequence. The groups are also ordered in accordance with a second pseudo-random sequence. The interpolated values of the final pixels are progressively replaced with the computed, actual values to arrive at the final version of the texture.